Data integrity is an important feature for any data storage device and data transmission. Use of strong error-correction codes (ECCs) is recommended for various types of data storage devices include NAND flash memory devices. ECCs are also frequently used during the process of data transmission.
Error correcting code (ECC) refers to codes that add redundant data, or parity data, to a message, such that the message can be recovered by a receiver even when a number of errors were introduced, either during the process of transmission, or storage. In general, the ECC can correct the errors up to the capability of the code being used.
Low-density parity-check (LDPC) codes are an example of ECC. Generally, an LDPC decoder uses an iterative decoding process to decode information bits. The iterative decoding consumes time and levies a processing burden. LDPC codes show excellent error-correction performance (e.g., bit error rate, code failure rate, etc.) with the iterative sum-product algorithm (SPA). However, the implementation cost of SPA (e.g., circuit area, power consumption, processing cycles, latency, etc.) can be prohibitive. For low-cost implementations, LDPC codes are decoded using iterative min-sum (MS) decoder. While MS decoder has low implementation cost (e.g., circuit area, power consumption, processing cycles, latency, etc.), it causes performance degradation (e.g., bit error rate, code failure rate, etc.) compared to SPA.